[toc]
centos7.8搭建openstack Mitaka版
mitaka版密码说明
| 密码名称 | 描述 |
|---|---|
| 数据库密码(不能使用变量) | 数据库的root密码 |
ADMIN_PASS | admin 用户密码 |
CEILOMETER_DBPASS | Telemetry 服务的数据库密码 |
CEILOMETER_PASS | Telemetry 服务的 ceilometer 用户密码 |
CINDER_DBPASS | 块设备存储服务的数据库密码 |
CINDER_PASS | 块设备存储服务的 cinder 密码 |
DASH_DBPASS | Database password for the dashboard |
DEMO_PASS | demo 用户的密码 |
GLANCE_DBPASS | 镜像服务的数据库密码 |
GLANCE_PASS | 镜像服务的 glance 用户密码 |
HEAT_DBPASS | Orchestration服务的数据库密码 |
HEAT_DOMAIN_PASS | Orchestration 域的密码 |
HEAT_PASS | Orchestration 服务中heat用户的密码 |
KEYSTONE_DBPASS | 认证服务的数据库密码 |
NEUTRON_DBPASS | 网络服务的数据库密码 |
NEUTRON_PASS | 网络服务的 neutron 用户密码 |
NOVA_DBPASS | 计 算服务的数据库密码 |
NOVA_PASS | 计算服务中nova用户的密码 |
RABBIT_PASS | RabbitMQ的guest用户密码 |
SWIFT_PASS | 对象存储服务用户swift的密码 |
实验环境
| 角色 | IP | 主机名 | 默认网关 | 硬件环境 | 虚拟化 | 防火墙 | selinux |
|---|---|---|---|---|---|---|---|
| 控制节点 | 10.0.0.11/24 | controller | 10.0.0.1 | 4G内存,50G硬盘 | 开启 | 关闭 | 关闭 |
| 计算节点 | 10.0.0.31/24 | compute1 | 10.0.0.1 | 4G内存,50G硬盘 | 开启 | 关闭 | 关闭 |
1.基础环境配置
1.1 关闭防火墙和selinux
//禁用 防火墙
systemctl stop firewalld && systemctl disable firewalld
//禁用selinux
#临时修改
setenforce 0
#永久修改,重启服务器后生效
sed -i '7s/enforcing/disabled/' /etc/selinux/config
1.2 配置hosts解析
#控制节点和计算节点相同操作
cat >> /etc/hosts << EOF
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.41 block1
10.0.0.51 object1
10.0.0.52 object2
EOF
1.3 配置NTP服务,要保证控制节点和计算节点时间一致
控制节点
1.安装chrony
yum -y install chrony
2.编辑chrony配置文件/etc/chrony.conf
/删除以下4行,使用阿里云NTP服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
server ntp1.aliyun.com iburst
/允许连接控制节点的网段,24行增加以下一行
allow 10.0.0.0/24
#用以 下命令修改
sed -i '3,6d' /etc/chrony.conf && sed -i '3cserver ntp1.aliyun.com iburst' \
/etc/chrony.conf && sed -i '23callow 10.0.0.0/24' /etc/chrony.conf
3.启动NTP服务并设置开机自启
systemctl enable chronyd && systemctl start chronyd
4.检查端口,监听udp323端口
netstat -nupl|grep chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 29356/chronyd
udp 0 0 0.0.0.0:123 0.0.0.0:* 29356/chronyd
udp6 0 0 ::1:323 :::* 29356/chronyd
5.验证
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 8.8.8.8 2 6 37 29 +43us[ -830us] +/- 22ms
计算节点
1.安装chrony
yum -y install chrony
2.编辑chrony配置文件/etc/chrony.conf
/删除以下4行,指定控制节点为NTP服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
server controller iburst
#用以下命令修改
sed -i '3,6d' /etc/chrony.conf && sed -i '3cserver controller iburst' /etc/chrony.conf
3.启动NTP服务并设置开机自启
systemctl enable chronyd && systemctl start chronyd
4.检查端口,监听udp323端口
netstat -nupl|grep chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1327/chronyd
udp6 0 0 ::1:323 :::* 1327/chronyd
5.验证,计算节点显示的是控制节点
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? controller 3 6 200 50 +1319ms[+1319ms] +/- 14.4s
1.4 下载openstack官方yum源安装openstack客户端
⚠️Mitaka版官方文档中直接安装centos-release-openstack-mitaka会提示没有可用包(使用的是阿里云的yum源),得先下载一个包才可以继续安装!!!
下载官方yum源提示无包可用解决方法
控制节点和计算节点相同操作
#下载yum源并安装openstack客户端
wget https://cbs.centos.org/kojifiles/packages/centos-release-openstack-mitaka/1/1.el7/noarch/centos-release-openstack-mitaka-1-1.el7.noarch.rpm
yum -y localinstall centos-release-openstack-mitaka-1-1.el7.noarch.rpm
yum -y install python-openstackclient
到此,控制节点和计算节点操作完成!!!
2.控制节点环境安装
2.1 安装mariadb数据库
1.安装mariadb数据库
yum -y install mariadb mariadb-server python2-PyMySQL
2.创建并编辑 /etc/my.cnf.d/openstack.cnf
在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以使得其他节点可以通过管理网络访问访问数据库。设置其他关键字来设置一些有用的选项和UTF-8编码
cat > /etc/my.cnf.d/openstack.cnf << EOF
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
3.启动数据库并设置开机自启
systemctl enable mariadb && systemctl start mariadb
4.进行数据库安全设置
mysql_secure_installation
Enter current password for root (enter for none): /没有密码,直接回车
Set root password? [Y/n] n /不设置root密码
Remove anonymous users? [Y/n] y /移除匿名用户
Disallow root login remotely? [Y/n] y /禁止root远程登陆
Remove test database and access to it? [Y/n] y /移除test数据库
Reload privilege tables now? [Y/n] y /刷新权限表
2.2 安装MongoDB数据库
Telemetry 服务使用 NoSQL 数据库来存储信息,典型地,这个数据库运行在控制节点上。向导中使用MongoDB。
mongodb监听tcp/27017
1.安装MongoDB数据库
yum -y install mongodb-server mongodb
2.编辑文件/etc/mongod.conf
配置 bind_ip 使用控制节点管理网卡的IP地址
修改第6行为
bind_ip = 10.0.0.11
默认情况下,MongoDB会在``/var/lib/mongodb/journal`` 目录下创建几个1GB大小的日志文件。如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值
取消第113行注释
smallfiles = true
#用以下命令修改
sed -i.bak '/^bind_ip/cbind_ip = 10.0.0.11' /etc/mongod.conf \
&& sed -i 's/#smallfiles = true/smallfiles = true/' /etc/mongod.conf
3.启动MongoDB并设置为开机自启
systemctl enable mongod && systemctl start mongod
2.3 安装消息队列rabbitmq
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上
rabbitmq会启动2个端口
tcp/5672 rabbitmq服务端口
tcp/25672 多个rabbitmq通信用到的端口
1.安装rabbitmq
yum -y install rabbitmq-server
2.启动消息队列rabbitmq并设置为开机自启
systemctl enable rabbitmq-server && systemctl start rabbitmq-server
3.添加openstack用户
rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"
4.给openstack用户设置读和写权限 3个.*分别是 可读、可写、可配置
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
5.启动rabbitmq一个插件,启动之后会监听tcp/15672,是一个web管理界面,默认用户名密码guest
rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@controller... started 6 plugins.
2.4 安装memcached
认证服务认证缓存使用Memcached缓存令牌。 缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
memcache监听 tcp/udp 11211端口
1.安装软件包
yum -y install memcached python-memcached
2.修改配置文件,设置memcache监听端口为控制节点,默认监听127.0.0.1
sed -i.bak 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached
3.启动memcached并设置为开机自启
systemctl enable memcached && systemctl start memcached
到此,控制节点环境安装完成!!!
3.控制节点认证服务keystone安装
keystone认证服务功能:认证管理、授权管理、服务目录
认证:用户名和密码
授权:授权管理,例如一些技术网站(掘金、csdn)可以授权微信、QQ登陆
服务目录:相当于通讯录,即要访问openstack的镜像、网络、存储等服务,只需要找到keystone即可,而不需要再单独记住各个服务的访问地址
- 后续每安装一个服务都需要在keystone上注册
3.1 创建keystone数据库并授权
#用以下命令操作
mysql -e "CREATE DATABASE keystone;"
mysql -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';"
3.2 配置keystron
3.2.1 安装和配置keystron
-
keystone借助apache访问
-
mod_wsgi是帮助apache连接python程序
-
监听端口 5000(普通用户访问) 35357(管理员用户访问),apache做了2个多端口的站点
1.安装相关包
yum -y install openstack-keystone httpd mod_wsgi openstack-utils.noarch
2.编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
在 [database] 部分,配置数据库访问:
[root@controller ~]# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
在[token]部分,配置Fernet UUID令牌的提供者
[token]
provider = fernet
#用以下命令修改
\cp /etc/keystone/keystone.conf{,.bak}
grep -Ev '^$|#' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
MD5值
md5sum /etc/keystone/keystone.conf
d5acb3db852fe3f247f4f872b051b7a9 /etc/keystone/keystone.conf
3.初始化身份认证服务的数据库(切换到keystone用户,使用的shell是/bin/sh,执行 -c后的命令)
su -s /bin/sh -c "keystone-manage db_sync" keystone
上一步操作为导入表,以下命令执行返回有表即为正确
mysql keystone -e "show tables;"|wc -l
38
4.初始化Fernet key
keystone-manage fernet_setup --keystone-user keystone \
--keystone-group keystone
5.配置Apache服务器
5.1编辑/etc/httpd/conf/httpd.conf`文件,配置``ServerName`` 选项为控制节点
96行下入以下一行
ServerName controller
#用以下命令修改
sed -i.bak '96cServerName controller' /etc/httpd/conf/httpd.conf
MD5值
md5sum /etc/httpd/conf/httpd.conf
eaf0e2ae3fea84bac3e5a842f64bdfdb /etc/httpd/conf/httpd.conf
5.2创建文件/etc/httpd/conf.d/wsgi-keystone.conf
cat > /etc/httpd/conf.d/wsgi-keystone.conf <<\EOF
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
EOF
MD5值
md5sum /etc/httpd/conf.d/wsgi-keystone.conf
8f051eb53577f67356ed03e4550315c2 /etc/httpd/conf.d/wsgi-keystone.conf
6.启动apache并设置为开机自启
systemctl enable httpd && systemctl start httpd
3.2.2 创建服务实体和API端点
API端点有3个
- public 公共
- internal 内部
- admin 管理员
1.先决条件
#配置身份验证令牌
export OS_TOKEN=ADMIN_TOKEN
#配置端点URL
export OS_URL=http://controller:35357/v3
#配置Identity API版本
export OS_IDENTITY_API_VERSION=3
2.创建服务实体和API端点
2.1 Identity服务管理OpenStack环境中的服务目录。服务使用此目录来确定您的环境中可用的其他服务。
为Identity服务创建服务实体
openstack service create --name \
keystone --description "OpenStack Identity" identity
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Identity |
| enabled | True |
| id | c7c0d1e96d7e4f809c2957099eb8a0d2 |
| name | keystone |
| type | identity |
+-------------+----------------------------------+
2.2 Identity服务管理与OpenStack环境中的服务关联的API端点的目录。服务使用此目录来确定如何与环境中的其他服务进行通信。
OpenStack为每项服务使用三种API端点变体:admin,internal和public。管理API端点允许默认修改用户和租户,而公共和内部API不允许这些操作。在生产环境中,出于安全原因,变体可能驻留在为不同类型的用户提供服务的单独网络上。例如,公共API网络可能从Internet上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域以实现可伸缩性。为简单起见,本指南将管理网络用于所有端点变体和默认值 RegionOne地区。
创建Identity Service API端点:
#公共普通用户使用5000端口
openstack endpoint create --region RegionOne \
identity public http://controller:5000/v3
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | f63e9c4450254214947ac75cddd394c1 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c7c0d1e96d7e4f809c2957099eb8a0d2 |
| service_name | keystone |
| service_type | identity |
| url | http://controller:5000/v3 |
+--------------+----------------------------------+
#keystone内部通信使用5000端口
openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v3
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 9b6a5be720ea46a4a38f403c47ad8b8f |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c7c0d1e96d7e4f809c2957099eb8a0d2 |
| service_name | keystone |
| service_type | identity |
| url | http://controller:5000/v3 |
+--------------+----------------------------------+
#管理员使用35357端口
openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v3
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 53d4bdc5bea041a0abfb9ea89dff65d6 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c7c0d1e96d7e4f809c2957099eb8a0d2 |
| service_name | keystone |
| service_type | identity |
| url | http://controller:35357/v3 |
+--------------+----------------------------------+
创建完API端点后使用命令openstack endpoint list验证是否创建成功
openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| 2f551bb367c045379a8042cdcb7287eb | RegionOne | keystone | identity | True | public | http://controller:5000/v3 |
| 77b014a9b8d44d038cb5d608ff6b9d56 | RegionOne | keystone | identity | True | internal | http://controller:5000/v3 |
| c2fcc9c1ee0244acb2860124a1575fd0 | RegionOne | keystone | identity | True | admin | http://controller:35357/v3 |
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
删除API端点使用openstack delete <endpoint-id>
3.3 创建域、项目、用户和角色
3.3.1 创建默认域
openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Default Domain |
| enabled | True |
| id | fad8700e172044e6ac4869c9eed6d2c3 |
| name | default |
+-------------+----------------------------------+
3.3.2 为环境中的管理操作创建管理项目,用户和角色
1.创建管理项目
openstack project create --domain default \
--description "Admin Project" admin
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Admin Project |
| domain_id | fad8700e172044e6ac4869c9eed6d2c3 |
| enabled | True |
| id | 9c1b0cb2b3914507b429f3f7b0c6b5e4 |
| is_domain | False |
| name | admin |
| parent_id | fad8700e172044e6ac4869c9eed6d2c3 |
+-------------+----------------------------------+
2.创建管理员用户,密码设置为ADMIN_PASS //这里交互式创建密码和非交互式选择其中一种
#非交互式设置密码
openstack user create --domain default \
--password ADMIN_PASS admin
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 984cb3d5f3054e16b029676de97b6ca6 |
| enabled | True |
| id | 273c94d5f389418b83ee6738376a6bdf |
| name | admin |
+-----------+----------------------------------+
#交互式设置密码
openstack user create --domain default \
--password-prompt admin
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | fad8700e172044e6ac4869c9eed6d2c3 |
| enabled | True |
| id | cc0f0af9f5c1492aa8919bf936c1c19b |
| name | admin |
+-----------+----------------------------------+
3.创建管理员角色
openstack role create admin
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 921e36b9338141479f52f7c46c04f9ef |
| name | admin |
+-----------+----------------------------------+
4.将admin角色添加到admin项目和用户
openstack role add --project admin --user admin admin
3.3.3 本指南使用的服务项目包含您添加到环境中的每项服务的唯一用户
创建服务项目
#service,后期用于关联openstack系统用户glance、nova、neutron
openstack project create --domain default \
--description "Service Project" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | fad8700e172044e6ac4869c9eed6d2c3 |
| enabled | True |
| id | ae31639e04be474cbabcad502be62cac |
| is_domain | False |
| name | service |
| parent_id | fad8700e172044e6ac4869c9eed6d2c3 |
+-------------+----------------------------------+
3.3.4 常规(非管理员)任务应该使用非特权项目和用户。例如,本指南创建了演示项目和用户
1.创建演示项目
openstack project create --domain default \
--description "Demo Project" demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | fad8700e172044e6ac4869c9eed6d2c3 |
| enabled | True |
| id | 6244aa0291104859b255990cef3eacd6 |
| is_domain | False |
| name | demo |
| parent_id | fad8700e172044e6ac4869c9eed6d2c3 |
+-------------+----------------------------------+
2.创建演示用户,密码设置为123456 //这里交互式创建密码和非交互式选择其中一种
#非交互式创建密码
openstack user create --domain default \
--password 123456 demo
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | af51b1180eb14a66b0380e4cd134df90 |
| enabled | True |
| id | c75ad14657d0497190cb479ba50f531b |
| name | demo |
+-----------+----------------------------------+
#交互式创建密码
openstack user create --domain default \
--password-prompt demo
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | fad8700e172044e6ac4869c9eed6d2c3 |
| enabled | True |
| id | 4639e42215a946b4be7e588d36979c64 |
| name | demo |
+-----------+----------------------------------+
3.创建用户角色
openstack role create user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | a35f989b04d1403e92a19895cae21c9d |
| name | user |
+-----------+----------------------------------+
4.将用户角色添加到演示项目和用户
openstack role add --project demo --user demo user
3.4 验证操作
3.4.1 出于安全原因,请禁用临时身份验证令牌机制:
编辑文件 /etc/keystone/keystone-paste.ini 并且移除admin_token_auth 从 [pipeline:public_api], [pipeline:admin_api], 和 [pipeline:api_v3] 部分
这一步操作可能会造成后续keystone认证失败!!!,实验的时候可以不执行!!!
sed -i.bak '51,64d' /etc/keystone/keystone-paste.ini
3.4.2 取消设置临时OS_TOKEN和OS_URL环境变量
unset OS_TOKEN OS_URL
3.4.3 作为admin用户,请求身份验证令牌,密码为ADMIN_PASS
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
Password:
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2019-01-31T05:46:45.000000Z |
| id | gAAAAABcUn21ftl6WYlhMsqIffRDo9Pg6Ei35hUlg8D_kzw1Azy- |
| | 4Ly1DeL0s3YbMOlz88jVFWnMyg2gaxFoVsS2pZYnRhVlnclg1yofFFHOENz39XHsuCUYICuDq4XqOLEbKWyS9IfZuNbWtKjEQa-jQaoe4PCk0fyFG0B6nE3vn9gNkOvXiTA |
| project_id | 9c1b0cb2b3914507b429f3f7b0c6b5e4 |
| user_id | cc0f0af9f5c1492aa8919bf936c1c19b |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
3.4.4 作为演示用户,请求身份验证令牌
执行3.4.1就会有问题,会报错HTTP 500
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
Password:
Discovering versions from the identity service failed when creating the password plugin. Attempting to determine version from URL.
Internal Server Error (HTTP 500)
不执行3.4.1,验证就没有问题
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2019-01-31T10:30:43.000000Z |
| id | gAAAAABeym2jDfXll4iZ2JcCP1XY1mHbu8Ovgaf8BMWe1FsoBp9XkaEqsnphx_BIuY0RFC-goS-JVZJ0xbiOajLnob7nWYKz5zlPlGkybvtDWd6L3jRMGD20RE- |
| | H5gRz5oBXPPRUt9e5Kxbc-5_WXu_nfjw3ASXPIu25inoeeXsvd1aeg9FzgBE |
| project_id | d08b00aa3c6944afa7095c280319acb9 |
| user_id | ec75d657d09c4899894d40364011f552 |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------+
3.5 创建OpenStack客户端环境脚本
3.5.1 创建脚本
编辑admin-openrc文件并添加以下内容,这里放在/opt下
cat > /opt/admin-openrc <<EOF
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
3.5.2 使用脚本
1.加载admin-openrc文件,使用Identity服务的位置以及admin项目和用户凭据填充环境变量
source /opt/admin-openrc
2.请求身份验证令牌(注意expires中是UTC时间,落后中国8个小时,我国是东八区,使用timedatectl查看时间及时区,默认过期时间1小时)
openstack token issue
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2019-01-31T10:49:41.000000Z |
| id | gAAAAABcUsS1O_B3QETf0hx8KWiuUyTBz23e2E70mY6DeWPvZreQrX58bEyJcMVgLGazsrKrqaJw0gSK75JHT0WNHf7V6VxNR5-uYLJKsGIuaUzNe9RMdTys_CcK680L- |
| | NU9VdSDllR6GQvbu4EqejSm_1d5iarR2cQD8n8kG1PcV_SNijApskk |
| project_id | e33e3feaef784a5bb45bd9c766bc0f46 |
| user_id | aaa8bfce5b5d451b956bb76dee235b9e |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
到此,控制节点认证服务keystone安装完成!!!
4.控制节点镜像服务glance安装
OpenStack镜像服务包括以下组件:
glance-api 接收镜像API的调用,诸如镜像发现、恢复、存储
glance-registry 存储、处理和恢复镜像的元数据(属性),元数据包括项诸如大小和类型
glance服务监听两个端口
glance-api 9292
glance-registry 9191
4.1 创建glance数据库并授权
#用以下命令修改
mysql -e "CREATE DATABASE glance;"
mysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';"
4.2 获取管理员凭据以获取对仅管理员CLI命令的访问
source /opt/admin-openrc
4.3 创建服务凭据
4.3.1 创建glance用户,密码设置为GLANCE_PASS
//这里交互式创建密码和非交互式选择其中一种
#非交互式设置密码
openstack user create --domain default --password GLANCE_PASS glance
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | af51b1180eb14a66b0380e4cd134df90 |
| enabled | True |
| id | 593894e4dabc411ebecf8cbe8f3f1109 |
| name | glance |
+-----------+----------------------------------+
#交互式设置密码
openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | b245194b1e8749d0b3c51a78e05d7734 |
| enabled | True |
| id | ff135a9cce5e4a55842dd2beaffa67e2 |
| name | glance |
+-----------+----------------------------------+
4.3.2 将管理角色添加到glance用户和服务项目中
openstack role add --project service --user glance admin
4.3.3 创建glance服务实体
openstack service create --name glance \
--description "OpenStack Image" image
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Image |
| enabled | True |
| id | de2e6d60f6234918a96f768516a36e9a |
| name | glance |
| type | image |
+-------------+----------------------------------+
删除服务实体使用命令openstack service delete <service-id>
使用命令openstack service list查看service-id然后根据id删除
4.3.4 创建Image服务API端点
openstack endpoint create --region RegionOne \
image public http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 7aede44313aa4f98971c513fb6aa37b9 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | de2e6d60f6234918a96f768516a36e9a |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne \
image internal http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 8edf9fd9452347d99d1a419b5f631f2c |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | de2e6d60f6234918a96f768516a36e9a |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne \
image admin http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 89ced10fcf444d5a95c9ad5fd9381040 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | de2e6d60f6234918a96f768516a36e9a |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
删除API端点使用命令openstack endpoint delete <endpoint-id>
使用命令openstack endpoint list查看endpoint-id然后根据id删除
4.4 安装和配置组件
4.4.1 安装包
yum -y install openstack-glance
4.4.2 编辑/etc/glance/glance-api.conf文件并完成以下操作
1.在[database]部分中,配置数据库访问
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
2.在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
3.在[glance_store]部分中,配置本地文件系统存储和映像文件的位置
[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
#用以下命令修改
\cp /etc/glance/glance-api.conf{,.bak}
grep '^[a-Z\[]' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
MD5值
md5sum /etc/glance/glance-api.conf
3e1a4234c133eda11b413788e001cba3 /etc/glance/glance-api.conf
4.4.3 编辑/etc/glance/glance-registry.conf文件并完成以下操作
1.在[database]部分中,配置数据库访问:
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
2.在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
#用以下命令修改
\cp /etc/glance/glance-registry.conf{,.bak}
grep '^[a-Z\[]' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
MD5值
md5sum /etc/glance/glance-registry.conf
46acabd81a65b924256f56fe34d90b8f /etc/glance/glance-registry.conf
4.4.4 同步数据库
忽略此输出中的任何弃用消息
su -s /bin/sh -c "glance-manage db_sync" glance
Option "verbose" from group "DEFAULT" is deprecated for removal. Its value may be silently ignored in the future.
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1056: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade
expire_on_commit=expire_on_commit, _conf=conf)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u'Duplicate index `ix_image_properties_image_id_name`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
#有输出即为正确
mysql glance -e "show tables;" | wc -l
21
4.4.5 启动glance服务并设置为开机自启(glance-api和glance-registry)
systemctl enable openstack-glance-api openstack-glance-registry && \
systemctl start openstack-glance-api openstack-glance-registry
4.4.6 验证操作
1.获取管理员凭据以获取对仅管理员CLI命令的访问权限
source /opt/admin-openrc
2.下载源镜像
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
3.使用QCOW2磁盘格式,裸容器格式和公共可见性将映像上载到映像服务 ,以便所有项目都可以访问它
注意:这一步一定要看执行后输出结果中size大小,如果为0则说明镜像上载有问题
openstack image create "cirros" \
--file cirros-0.3.4-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2019-01-31T12:26:32Z |
| disk_format | qcow2 |
| file | /v2/images/ac21b17b-e910-4ca4-b743-914b8fbd0e55/file |
| id | ac21b17b-e910-4ca4-b743-914b8fbd0e55 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | e33e3feaef784a5bb45bd9c766bc0f46 |
| protected | False |
| schema | /v2/schemas/image |
| size | 13287936 | //一定要注意这里的大小,为0有错误
| status | active |
| tags | |
| updated_at | 2019-01-31T12:26:34Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+
镜像上传位置
[root@controller images]# pwd
/var/lib/glance/images
[root@controller images]# ls
6a143876-39c6-4b4a-8056-c3d7fbe0ce75
删除镜像使用命令glance image-delete 镜像id
4.4.7 确认上传图像并验证属性
openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| ac21b17b-e910-4ca4-b743-914b8fbd0e55 | cirros | active |
+--------------------------------------+--------+--------+
到此,控制节点镜像服务glance安装完成!!!
5.控制节点和计算节点计算服务nova安装
nova相关服务
| 服务名称 | 作用 |
|---|---|
| nova-api | 接受并响应所有的计算服务请求,管理虚拟机(云主机)生命周期 |
| nova-api-metadata | 接受来自虚拟机发送的元数据请求 |
| nova-compute(多个) | 真 正管理虚拟机 |
| nova-scheduler | nova调度器(挑选出最合适的nova-compute来创建虚机) |
| nova-conductor | 帮助nova-compute代理修改数据库中虚拟机的状态 |
| nova-network | 早期openstack版本管理虚拟机的网络(已弃用,neutron) |
| nova-consoleauth和nova-novncproxy | web版的vnc来直接操作云主机 |
| novncproxy | web版 vnc客户端 |
安装和配置控制节点
5.1 创建nova和nova-api数据库并授权
#用以下命令
mysql -e "CREATE DATABASE nova;"
mysql -e "CREATE DATABASE nova_api;"
mysql -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';"
mysql -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';"
5.2 获取管理员凭据以获取对仅管理员CLI命令的访问权限
source /opt/admin-openrc
5.3 创建服务凭据
1.创建nova用户,密码设置为NOVA_PASS //这里交互式创建密码和非交互式选择其中一种
#非交互式创建密码
openstack user create --domain default \
--password NOVA_PASS nova
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | af51b1180eb14a66b0380e4cd134df90 |
| enabled | True |
| id | 1ad918dc1de84c279999e89bb7c312bc |
| name | nova |
+-----------+----------------------------------+
#交互式创建密码
openstack user create --domain default \
--password-prompt nova
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | b245194b1e8749d0b3c51a78e05d7734 |
| enabled | True |
| id | b7cd769660c64b96bed91baebb229d54 |
| name | nova |
+-----------+----------------------------------+
2.将admin角色添加到nova用户
openstack role add --project service --user nova admin
3.创建nova服务实体
openstack service create --name nova \
--description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 3db049ab4b334d6d979a9ee9a6aea5d5 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
5.4 创建Compute服务API端点
openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 0e1da405775b4a238f4142d8df6b8b58 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3db049ab4b334d6d979a9ee9a6aea5d5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 36775f0fcbf24ce1888ff714442aea04 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3db049ab4b334d6d979a9ee9a6aea5d5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 8d575d9584df4c0cb3d903c50688175f |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 3db049ab4b334d6d979a9ee9a6aea5d5 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
5.5 安装和配置组件
5.5.1 安装包
yum -y install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
5.5.2 编辑/etc/nova/nova.conf文件并完成以下操作
1.在[DEFAULT]部分中,仅启用计算和元数据API
[DEFAULT]
...
enabled_apis = osapi_compute,metadata
2.在[api_database]和[database]部分中,配置数据库访问
[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
3.在[DEFAULT]和[oslo_messaging_rabbit]部分中,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
4.在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
5.在[DEFAULT]部分中,配置my_ip选项以使用控制器节点的管理接口IP地址
[DEFAULT]
...
my_ip = 10.0.0.11
6.在[DEFAULT]部分中,启用对Networking服务的支持
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
7.在[vnc]部分中,配置VNC代理以使用控制器节点的管理接口IP地址
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
8.在[glance]部分中,配置Image服务API的位置
[glance]
...
api_servers = http://controller:9292
9.在[oslo_concurrency]部分中,配置锁定路径
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
#用以下命令修改,分开复制,一次性复制无法都执行
cp /etc/nova/nova.conf{,.bak}
grep '^[a-Z\[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.0.0.11
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/nova/nova.conf vnc vncserver_listen '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address '$my_ip'
MD5值
md5sum /etc/nova/nova.conf
47ded61fdd1a79ab91bdb37ce59ef192 /etc/nova/nova.conf
5.5.3 同步数据库,忽略输出
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
#查看数据库,有输出即为正确
mysql nova_api -e "show tables;"|wc -l
10
mysql nova -e "show tables;"|wc -l
110
5.5.4 启动Compute服务并将其配置为在系统引导时启动
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
安装完成后会有no VNC 10.0.0.11:6080

安装和配置计算节点
5.6 安装和配置组件
5.6.1 安装包
yum -y install openstack-nova-compute openstack-utils
5.6.2 编辑/etc/nova/nova.conf文件并完成以下操作
1.在[DEFAULT]和[oslo_messaging_rabbit]部分中,配置RabbitMQ消息队列访问
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
2.在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
3.在[DEFAULT]部分中,配置my_ip选项,将MANAGEMENT_INTERFACE_IP_ADDRESS替换为计算节点上管理网络接口的IP地址,对于示例体系结构中的第一个节点,通常为10.0.0.31
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
4.在[DEFAULT]部分中,启用对Networking服务的支持
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
5.在[vnc]部分中,启用并配置远程控制台访问
[vnc]
...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
6.在[glance]部分中,配置Image服务API的位置
[glance]
...
api_servers = http://controller:9292
7.在[oslo_concurrency]部分中,配置锁定路径
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
#用以下命令修改
cp /etc/nova/nova.conf{,.bak}
grep '^[a-Z\[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.0.0.31
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/nova/nova.conf vnc enabled True
openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://controller:6080/vnc_auto.html
MD5值
md5sum /etc/nova/nova.conf
2f53f4e0848bc5927493925a4ea61f63 /etc/nova/nova.conf